JSP使用cookie实现记住账号密码的功能

您所在的位置:网站首页 cookie 怎么保持登录状态 JSP使用cookie实现记住账号密码的功能

JSP使用cookie实现记住账号密码的功能

2023-09-11 02:16| 来源: 网络整理| 查看: 265

所谓自动登录,就是下次打开的时候不用再次输入账号密码,一定程度上方便了用户,但也有它的缺点,就是可能泄露用户信息。

HTTP的无状态性

HTTP的无状态性,是指当客户端发请求给服务器的时候,服务器会响应客户端的请求,但当客户端再次发请求给服务器时,服务器并不知道这就是刚刚那个客户端。简单的说,就是服务器没有记忆,不会记住客户端。

那这样我们要让服务器记住一些事情怎么办呢?比如要记住客户端输入的账户信息,这时我们就可以使用JSP的cookie来实现这个功能。

保存用户状态的两种方式

sessioncookie

下面我们来讲讲怎么用cookie实现记住账号信息的功能。

在JSP中创建和使用cookie 1.创建cookie对象

Cookie cookie = new Cookie(String name, Object value);

2.写入cookie对象

response.addCookie(cookie);

3.读取cookie对象

Cookie[] cookies = request.getCookies();

Cookie的一些常用方法,可以查看API,这是传送门https://docs.oracle.com/javaee/6/api/

下面我们用代码来看看,代码分为三块,

第一个是login.jsp,是用户的登陆界面,用户在此界面输入用户名和密码,在这个页面上,我们要判断用户是否选择了记住账号信息的选项,如果选择了,在账户输入框和密码输入框,我们就自动填上账户信息,如果没有勾选,则不填。第二个是dologin.jsp,顾名思义,就是处理用户的输入信息,在这个页面,先判断用户是否勾选了记住账号信息的选项,如果勾选了,我们先用request内置对象读取用户输入的信息,然后把值放入新建的cookie对象,最后用response写入cookie对象。如果没有勾选,则判断cookie里是否有值,如果有值,则设置cookie的有效期,使cookie过期。第三个是user_info.jsp,是显示用户信息的页面,超链接放在dologin.jsp里面。在这个页面,我们先先读取cookie的信息,如果不为空,则循环输出账号信息。 用户登录 用户登录 0) { for(Cookie c:cookies) { if(c.getName().equals("usernameCookie")) { // 解码 username = URLDecoder.decode(c.getValue(), "utf-8"); } else if(c.getName().equals("passwordCookie")) { password = URLDecoder.decode(c.getValue(), "utf-8"); } } } %> 用户名 密码 七天免登录

用户登录界面,粗糙的写了一下。 这里写图片描述

用户登录成功界面 用户登录成功界面 0) { // 获取输入的username和password,进行编码 String username = URLEncoder.encode(request.getParameter("username"), "utf-8"); String password = URLEncoder.encode(request.getParameter("password"), "utf-8"); // 新建cookie对象 Cookie usernameCookie = new Cookie("usernameCookie", username); Cookie passwordCookie = new Cookie("passwordCookie", password); // 设置cookie的有效期7天,单位为秒 usernameCookie.setMaxAge(604800); passwordCookie.setMaxAge(604800); // 写入cookie对象 response.addCookie(usernameCookie); response.addCookie(passwordCookie); } else { //如果用户取消了记住账户信息,则应该对cookie里的信息进行清理 Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) { for(Cookie c:cookies) { if(c.getName().equals("usernameCookie") || c.getName().equals("passwordCookie")) { // 使cookie过期 c.setMaxAge(0); response.addCookie(c); } } } } %> 查看用户详情

这里写图片描述

用户信息界面 用户信息界面 0) { for(Cookie c:cookies) { if(c.getName().equals("usernameCookie")) { // 解码 username = URLDecoder.decode(c.getValue(), "utf-8"); } else if(c.getName().equals("passwordCookie")) { password = URLDecoder.decode(c.getValue(), "utf-8"); } } } %> 用户名: 密码:

这里写图片描述

过程大概就这这样子。大家可以自己拿源码去试试看。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3